Stored Procedure এবং Trigger এর বাস্তব উদাহরণ

বাস্তব উদাহরণ এবং ডেমো - এসকিউলাইট (SQLite) - Database Tutorials

304

Stored Procedure এবং Trigger ডাটাবেসের মধ্যে অটোমেশন এবং লজিক প্রক্রিয়াকে সহজতর করার জন্য ব্যবহৃত হয়। তারা বিশেষ ধরনের SQL স্ক্রিপ্ট যা ডাটাবেসে সেভ করা হয় এবং বিভিন্ন শর্তে অথবা একটি নির্দিষ্ট ইভেন্টে এক্সিকিউট হয়। চলুন, তাদের বাস্তব উদাহরণ দেখি।


১. Stored Procedure

Stored Procedure হলো একটি প্রি-কম্পাইলড SQL কোডের সেট যা ডাটাবেসে সংরক্ষিত থাকে এবং যখন প্রয়োজন হয় তখন কল করা হয়। এটি পুনরায় ব্যবহারযোগ্য এবং ডাটাবেসে লজিক পরিচালনা করতে সহায়তা করে।

বাস্তব উদাহরণ:

ধরা যাক, আপনার একটি orders টেবিল আছে যেখানে আপনি গ্রাহকের অর্ডারের মোট মূল্য এবং ডিসকাউন্ট হিসাব করতে চান। এই কাজটি স্বয়ংক্রিয় করতে একটি Stored Procedure তৈরি করা যায়।

orders টেবিল:
order_idcustomer_idorder_amountdiscount
11015000
210210000
Stored Procedure:
DELIMITER CREATEPROCEDURECalculateDiscount(INcustomeridINT)BEGINDECLAREtotalamountDECIMAL(10,2);--িSELECTSUM(orderamount)INTOtotalamountFROMordersWHEREcustomerid=customerid;--িIFtotalamount>1000THENUPDATEordersSETdiscount=10WHEREcustomerid=customerid;ELSEUPDATEordersSETdiscount=0WHEREcustomerid=customerid;ENDIF;END

CREATE PROCEDURE CalculateDiscount(IN customer_id INT)
BEGIN
    DECLARE total_amount DECIMAL(10, 2);
    
    -- গ্রাহকের মোট অর্ডার পরিমাণ বের করা
    SELECT SUM(order_amount) INTO total_amount
    FROM orders
    WHERE customer_id = customer_id;
    
    -- ডিসকাউন্ট প্রযোজ্য করা
    IF total_amount > 1000 THEN
        UPDATE orders
        SET discount = 10
        WHERE customer_id = customer_id;
    ELSE
        UPDATE orders
        SET discount = 0
        WHERE customer_id = customer_id;
    END IF;
END

DELIMITER ;
Stored Procedure কল করা:
CALL CalculateDiscount(101);

এই Stored Procedure customer_id অনুযায়ী মোট অর্ডার পরিমাণ বের করবে এবং সেই অনুযায়ী ডিসকাউন্ট প্রযোজ্য করবে। যদি গ্রাহকের মোট অর্ডার 1000 এর বেশি হয়, তবে 10% ডিসকাউন্ট দেওয়া হবে।


২. Trigger

Trigger একটি ডাটাবেস অবজেক্ট যা নির্দিষ্ট ইভেন্টে স্বয়ংক্রিয়ভাবে চলতে শুরু করে, যেমন একটি রেকর্ড ইনসার্ট, আপডেট বা ডিলিট করা হলে। Trigger সাধারণত ডাটাবেসের নিরাপত্তা বা ডেটা ইন্টিগ্রিটি নিশ্চিত করতে ব্যবহৃত হয়।

বাস্তব উদাহরণ:

ধরা যাক, আপনার একটি employees টেবিল আছে যেখানে কর্মচারীদের তথ্য রাখা হয় এবং আপনি চান যে, যখন একটি কর্মচারীর salary আপডেট হয়, তখন একটি audit_log টেবিলেও সেই পরিবর্তন লগ করা হোক।

employees টেবিল:
employee_idnamesalary
1Alice50000
2Bob60000
audit_log টেবিল:
log_idemployee_idactionold_salarynew_salarytimestamp
11Salary UpdateNULL500002024-11-01 10:00:00
22Salary UpdateNULL600002024-11-01 11:00:00
Trigger তৈরি করা:
CREATE TRIGGER SalaryUpdateTrigger
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
    -- যদি salary পরিবর্তিত হয়, তাহলে audit_log এ নতুন রেকর্ড যোগ করা হবে
    IF OLD.salary != NEW.salary THEN
        INSERT INTO audit_log (employee_id, action, old_salary, new_salary, timestamp)
        VALUES (NEW.employee_id, 'Salary Update', OLD.salary, NEW.salary, NOW());
    END IF;
END;
Trigger ব্যাখ্যা:
  • Trigger Type: AFTER UPDATE — এটি employees টেবিলের update অপারেশন সম্পন্ন হওয়ার পরে কার্যকর হবে।
  • Condition: IF OLD.salary != NEW.salary — অর্থাৎ, যদি পুরনো এবং নতুন স্যালারি আলাদা হয়, তখন audit_log টেবিলে নতুন একটি রেকর্ড সন্নিবেশ করা হবে।
  • Action: স্যালারি পরিবর্তনের তথ্য audit_log টেবিলে সন্নিবেশ করা।
Trigger কার্যক্রম:
  1. আপনি যখন employees টেবিলে একটি স্যালারি আপডেট করবেন:
UPDATE employees SET salary = 55000 WHERE employee_id = 1;
  1. তখন audit_log টেবিলে এই পরিবর্তনটি লগ হবে:
log_idemployee_idactionold_salarynew_salarytimestamp
11Salary Update50000550002024-11-01 12:00:00

সারাংশ

Stored Procedure এবং Trigger ডাটাবেসের কার্যকারিতা এবং অটোমেশন উন্নত করতে ব্যবহৃত হয়:

  • Stored Procedure: এটি SQL কোডের একটি প্যাকেজ যা একাধিক SQL স্টেটমেন্ট একসাথে রান করায়। এটি পুনঃব্যবহারযোগ্য এবং বিশেষ কাজের জন্য ব্যবহার করা যায়।
  • Trigger: এটি একটি স্বয়ংক্রিয় SQL স্ক্রিপ্ট যা নির্দিষ্ট ডাটাবেস ইভেন্ট (যেমন ইনসার্ট, আপডেট, ডিলিট) ঘটলে চলতে শুরু করে।

দুটি টুলই ডাটাবেসের কার্যক্রম সহজতর করে এবং ডেটার ইন্টিগ্রিটি বজায় রাখার জন্য অত্যন্ত উপকারী।

Content added By
Promotion

Are you sure to start over?

Loading...